home *** CD-ROM | disk | FTP | other *** search
/ Die Ultimative Software-P…i Collection 1996 & 1997 / Die Ultimative Software-Pakete CD-ROM fur Atari Collection 1996 & 1997.iso / a / a_funk / satellit.tos / SATELLIT / SAT_SOUR.TXT / DOVESAT2.GFA < prev    next >
Encoding:
Text File  |  1995-05-01  |  10.6 KB  |  364 lines

  1. bbs> Msg# 43142   To: ATARI @DL   From: DD9ZK   Date: 11Feb90/0232
  2. Subject: DOVE-Telem. im GEM-Fenster
  3. Bulletin ID: 112001DB0GV
  4. Path: DB0IE!DB0GV
  5. de DD9ZK @ DB0GV
  6.  
  7. Hallo Atarianer!
  8. Hier ist mein Beitrag zum Thema Dove-Telemetrie-Decoder.
  9.  
  10. Fenstertechnik: Die 59 Zeilen Telemetrie auf dem Bildschirm zu bringen, wo
  11. dieser doch nur 25 schafft, ist ja eigentlich kein Problem, selbst wenn man
  12. auch hochscrollen möchte ("cursor up and insert" des VT52-Emulators).
  13. Doch verzichtet man bei den schnellen Lösungen auf die graphische Benutzer-
  14. oberfläche wie man sie vom Desktop her kennt. Weil ich das nicht gut fand,
  15. schrieb ich innerhalb von 3 Tagen dieses Programm. Es war das erste Mal, daβ
  16. ich mit GEM-Programmierung zu tun hatte. Ich ging dabei absichtlich den
  17. "Fuβweg", damit man die Programmierung jederzeit in eine andere Hochsprache
  18. übernehmen kann. Spezielle GFA-Befehle wie "openw", der u.a. das beschreiben
  19. des Fensterarbeitsbereichs mit dem gewöhnlichen "Print" ermöglicht, fehlen
  20. also. Einzige Ausnahme ist der "Text"-Befehl, und das nur weil die Stringkon-
  21. vertierung für VDI8 so wegfallen konnte.
  22.  
  23. Referenzwerte: In den Datas sind neben den Umrechnungskoeffizienten und den
  24. Strings auch Referenzwerte enthalten. Es soll durch den Vergleich mit den
  25. gelesenen Werten auf Abweichungen aufmerksam gemacht werden. Dies passiert
  26. in diesem Programm -wenig effektvoll- durch die zusätzliche Ausgabe des
  27. umgerechneten Referenzwertes. Hier könnte man natürlich spezielle Eigen-
  28. schaften des Druckers ausnutzen oder aber auch auf dem Bildschirm augen-
  29. merkliche Dinge passieren lassen.
  30.  
  31. Telemetrieblock-Format: Ein Musterblock ist im Anschluβ zu finden. Es handelt
  32. sich um den Block, dessen Werte sich jetzt in den Datas als Referenz befinden.
  33. Grundsätzlich gilt: Das Format ist unkritisch (s.a. Listing, Suchschleife).
  34. Wer jedoch einen Block wie den unteren Auswerten läβt (597 Bytes), erhält
  35. als Bonbon in der Titelzeile noch zusätzlich Datum und Uhrzeit des Blockes.
  36. Einziges Muβ: Die ersten vier Zeichen sind "DOVE".
  37.  
  38. Einschränkungen: Das Programm läuft nur mit hoher Auflösung. Auβerdem ist
  39. es gut möglich, daβ es sich nicht mit Accessories verträgt. Wenn dem so ist,
  40. und jemand trotzdem nicht vom "Zubehör" lassen kann, hi, sollte sich dieser
  41. Mangel auch relativ leicht beseitigen lassen. Man müsste dann mindestens auf
  42. Fensternummern prüfen...
  43.  
  44. Sonst noch was? Das Programm ist in GFA 2.0 auf dem Atari 1040 STF mit TOS1.4
  45. entstanden. Compillation tut gut, bringt aber kaum Geschwindigkeitsvorteile.
  46. Ich würde mich sehr über Verbesserungsvorschläge freuen und biete mich als
  47. Koordinator an. Das heiβt, bei genügender Resonanz gibts möglicherweise ein
  48. Update bzw. eine neue Version.
  49.  
  50. Nun viel Spaβ und vy 73 wünscht Karl Heinz, DD9ZK @ DB0GV !
  51.  
  52.  
  53. DOVE-1>TLM>UI:00:59 01:58 02:86 03:32 04:57 05:58 06:6E 07:40 08:6C 09:62 0A:A2
  54. 0B:DC 0C:E7 0D:D7 0E:00 0F:24 10:CC 11:A4 12:00 13:01 14:AE 15:9C
  55. 16:99 17:93 18:94 19:94 1A:92 1B:8B 1C:9A 1D:96 1E:24 1F:5E 20:BD
  56. DOVE-1>TLM>UI:21:9A 22:76 23:1F 24:1F 25:2E 26:00 27:00 28:01 29:00 2A:00 2B:00
  57. 2C:00 2D:2A 2E:00 2F:9C 30:C9 31:9C 32:11 33:C7 34:C2 35:96 36:A5
  58. 37:A3 38:B8 39:99 3A:01
  59. DOVE-1>STATUS>UI: 00 00 00 83 B0 18 CC 02 00 B0 00 00 B0 00 00 00 00 00 00 00
  60. DOVE-1>WASH>UI:wash addr:0cc0:0000, edac=0x82
  61. DOVE-1>TIME-1>UI:PHT: uptime is 040/07:08:16.  Time is Tue Jan 23 21:37:10 1990
  62.  
  63.  
  64. REM PROGRAMM DOVDEGEM.LST
  65. Deffn P(X)=Q*X*X+L*X+A
  66. Deftext 1,0,0,13
  67. Dim Pu$(&H3A)
  68. Gc%=Gcontrl
  69. Gi%=Gintin
  70. Vc%=Contrl
  71. Vi%=Intin
  72. Pv%=Ptsin
  73. M$=Space$(16) ! Messagebuffer
  74. Fdb$=Space$(20)
  75. Rem Hier wird der FormDefinitionBlock angelegt
  76. Fdb%=Varptr(Fdb$)
  77. Lpoke Fdb%,Xbios(2)
  78. Dpoke Fdb%+8,40
  79. Dpoke Fdb%+10,0
  80. Dpoke Fdb%+12,1
  81. Print "Bitte auszuwertenden Telemetrieblock anwählen"
  82. Fileselect "\*.BLK","",N$
  83. If N$=""
  84.   End
  85. Endif
  86. Cls
  87. Open "I",#1,N$
  88. If Input$(4,#1)<>"DOVE"
  89.   Alert 1,"Unkorrekte Satellitenkennung",1,"Stop",A%
  90.   End
  91. Endif
  92. For A%=0 To &H3A
  93.   If A%<16
  94.     A$="0"+Hex$(A%)
  95.   Else ! Suchstring zusammenbasteln
  96.     A$=Hex$(A%)
  97.   Endif
  98.   H%=Asc(A$)
  99.   G%=Asc(Right$(A$))
  100.   Repeat
  101.     Repeat
  102.     Until Inp(#1)=H%
  103.   Until Inp(#1)=G% ! Zeichenkette gefunden
  104.   Exit If Inp(#1)<>58 ! nächstes Zeichen : ?
  105.   P$=Input$(2,#1)
  106.   D%=Val("&"+P$) ! Dann Hexwert holen
  107.   Read R%,B$,Q,L,A,E$
  108.   If R%=0
  109.     O=-(R%=D%)
  110.   Else ! Ist der Ref-Wert 0 darf nicht geteilt werden
  111.     O=D%/R%
  112.   Endif
  113.   If O>1.02 Or O<0.98 ! Maximale Abweichung 2%
  114.     Pu$(A%)=A$+"  "+B$+"  "+Str$(Fn P(D%))+"  "+Str$(Fn P(R%))+"  "+E$
  115.   Else
  116.     Pu$(A%)=A$+"  "+B$+"  "+Str$(Fn P(D%))+"  "+E$
  117.   Endif
  118. Next A%
  119. If A%<&H3B
  120.   End
  121. Endif
  122. Seek #1,521
  123. If Input$(4,#1)="TIME"
  124.   Seek #1,568
  125.   Tim$=Input$(25,#1)
  126.   T$=N$+Tim$
  127. Else
  128.   T$=N$
  129. Endif
  130. Close
  131. Print "Dove-Telemetrieblock-Decoder, GEM mit GFA 2.0, DD9ZK, Wetzlar 02/90"
  132. Print
  133. Print
  134. Rem Parameter für Window Create
  135. Dpoke Gc%,100
  136. Dpoke Gc%+2,5
  137. Dpoke Gc%+4,1
  138. Dpoke Gc%+6,0
  139. Dpoke Gc%+8,0
  140. Dpoke Gi%,451
  141. Dpoke Gi%+2,0
  142. Dpoke Gi%+4,19
  143. Dpoke Gi%+6,640
  144. Dpoke Gi%+8,372
  145. Gemsys
  146. Wh%=Dpeek(Gintout)
  147. Rem Windowhandle merken, weiter mit Window Open
  148. Dpoke Gc%,101
  149. Dpoke Gi%,Wh%
  150. Gemsys
  151. Rem jetzt wird die Titelzeile gesetzt
  152. Dpoke Gc%,105
  153. Dpoke Gc%+2,6
  154. Dpoke Gi%+2,2
  155. Lpoke Gi%+4,Varptr(T$)
  156. Gemsys
  157. Dpoke Gi%+2,16
  158. Dpoke Gi%+4,380 !relative Gröβe des Schiebers
  159. Gemsys
  160. Zn%=0
  161. Rem ab hier die Ausgabe-Hauptschleife
  162. Do
  163.   Dpoke Gc%,23
  164.   Dpoke Gc%+2,0
  165.   Dpoke Gc%+4,1
  166.   Dpoke Gc%+6,1
  167.   Dpoke Gc%+8,0
  168.   Lpoke Addrin,Varptr(M$)
  169.   Gemsys
  170.   A%=Dpeek(Varptr(M$)) !Nachrichtennummer lesen
  171.   Exit If A%=22 ! Close angeklickt
  172.   If A%=20
  173.     Gosub Neu
  174.   Endif
  175.   If A%=24
  176.     B%=Dpeek(Varptr(M$)+8)+1
  177.     On B% Gosub Sup,Sdown,Zup,Zdown
  178.   Endif
  179.   If A%=26
  180.     Zn%=Dpeek(Varptr(M$)+8)*37\1000
  181.     Gosub Neu
  182.   Endif
  183.   Dpoke Gc%,105
  184.   Dpoke Gc%+2,6
  185.   Dpoke Gc%+4,1
  186.   Dpoke Gc%+6,0
  187.   Dpoke Gc%+8,0
  188.   Dpoke Gi%+2,9 !Position des Schiebers setzen
  189.   Dpoke Gi%+4,Zn%*1000\37
  190.   Gemsys
  191. Loop
  192. Dpoke Gc%,102
  193. Dpoke Gc%+2,1
  194. Dpoke Gc%+4,1
  195. Dpoke Gc%+6,0
  196. Dpoke Gc%+8,0
  197. Dpoke Gi%,Wh%
  198. Gemsys ! Fenster schlieβen
  199. Dpoke Gc%,103
  200. Gemsys ! und abmelden
  201. Alert 2,"Daten ausdrucken?",2,"Ja|Nein",A%
  202. If A%=1
  203.   Lprint T$
  204.   For B%=0 To &H3A
  205.     Lprint Pu$(B%)
  206.   Next B%
  207. Endif
  208. End
  209. Procedure Neu
  210.   Gosub Clrw
  211.   For B%=0 To 21
  212.     Pn%=B%+Zn%
  213.     Py%=B%*16+51
  214.     Text 1,Py%,Pu$(Pn%)
  215.   Next B%
  216. Return
  217. Procedure Zdown
  218.   If Zn%<&H3A-21
  219.     Gosub Rasterc
  220.     Dpoke Vi%,3
  221.     Dpoke Pv%,1
  222.     Dpoke Pv%+2,54
  223.     Dpoke Pv%+4,620
  224.     Dpoke Pv%+6,389
  225.     Dpoke Pv%+8,1
  226.     Dpoke Pv%+10,38
  227.     Dpoke Pv%+12,620
  228.     Dpoke Pv%+14,373
  229.     Vdisys
  230.     Dpoke Intin,0
  231.     Dpoke Pv%+2,38
  232.     Dpoke Pv%+6,53
  233.     Dpoke Pv%+10,374
  234.     Dpoke Pv%+14,389
  235.     Vdisys
  236.     Inc Zn%
  237.     Pn%=Zn%+21
  238.     Py%=387
  239.     Text 1,Py%,Pu$(Pn%)
  240.   Endif
  241. Return
  242. Procedure Zup
  243.   If Zn%>0
  244.     Gosub Rasterc
  245.     Dpoke Intin,3
  246.     Dpoke Pv%,1
  247.     Dpoke Pv%+2,38
  248.     Dpoke Pv%+4,620
  249.     Dpoke Pv%+6,373
  250.     Dpoke Pv%+8,1
  251.     Dpoke Pv%+10,54
  252.     Dpoke Pv%+12,620
  253.     Dpoke Pv%+14,389
  254.     Vdisys
  255.     Dpoke Intin,0
  256.     Dpoke Pv%+2,374
  257.     Dpoke Pv%+6,389
  258.     Dpoke Pv%+10,38
  259.     Dpoke Pv%+14,53
  260.     Vdisys
  261.     Dec Zn%
  262.     Py%=51
  263.     Pn%=Zn%
  264.     Text 1,Py%,Pu$(Pn%)
  265.   Endif
  266. Return
  267. Procedure Sup
  268.   Sub Zn%,22
  269.   If Zn%<0
  270.     Zn%=0
  271.   Endif
  272.   Gosub Neu
  273. Return
  274. Procedure Sdown
  275.   Add Zn%,22
  276.   If Zn%>&H3A-21
  277.     Zn%=&H3A-21
  278.   Endif
  279.   Gosub Neu
  280. Return
  281. Procedure Clrw
  282.   Gosub Rasterc
  283.   Dpoke Intin,0
  284.   Dpoke Pv%,1
  285.   Dpoke Pv%+2,38
  286.   Dpoke Pv%+4,620
  287.   Dpoke Pv%+6,389
  288.   Dpoke Pv%+8,1
  289.   Dpoke Pv%+10,38
  290.   Dpoke Pv%+12,620
  291.   Dpoke Pv%+14,389
  292.   Vdisys
  293. Return
  294. Procedure Rasterc
  295.   Dpoke Vc%,109
  296.   Dpoke Vc%+2,4
  297.   Dpoke Vc%+4,0
  298.   Dpoke Vc%+6,1
  299.   Dpoke Vc%+8,0
  300.   Dpoke Vc%+12,2
  301.   Lpoke Vc%+14,Fdb%
  302.   Lpoke Vc%+18,Fdb%
  303. Return
  304. Data &59,"Rx E/F Audio(W)",0,0.0246,0,"V(p-p)"
  305. Data &58,"Rx E/F Audio(N)",0,0.0246,0,"V(p-p)"
  306. Data &86,"Mixer Bias V:  ",0,0.0102,0,"Volts"
  307. Data &32,"Osc. Bisd V:   ",0,0.0102,0,"Volts "
  308. Data &57,"Rx A Audio (W):",0,0.0246,0,"V(p-p)"
  309. Data &58,"Rx A Audio (N):",0,0.0246,0,"V(p-p)"
  310. Data &6E,"Rx A DISC:     ",0,-0.09274,10.427,"kHz"
  311. Data &40,"Rx A S meter:  ",0,1,0,"Counts"
  312. Data &6C,"Rx E/F DISC:   ",0,-0.09911,9.6234,"kHz"
  313. Data &62,"Rx E/F S meter:",0,1,0,"Counts"
  314. Data &A2,"+5 Volt Bus:   ",0,0.0305,0,"Volts"
  315. Data &DC,"+5V Rx Current:",0,0.0001,0,"Amps"
  316. Data &E7,"+2.5V  VREF:   ",0,0.0108,0,"Volts"
  317. Data &D7,"8.5V BUS:      ",0,0.0391,0,"Volts"
  318. Data &00,"IR Detector:   ",0,1,0,"Counts"
  319. Data &24,"LO Monitor I:  ",0,0.000037,0,"Amps"
  320. Data &CC,"+10V Bus:      ",0,0.05075,0,"Volts"
  321. Data &A4,"GASFET Bias I: ",0,0.000026,0,"Amps"
  322. Data &00,"Ground REF:    ",0,0.01,0,"Volts"
  323. Data &01,"+Z Array V:    ",0,0.1023,0,"Volts"
  324. Data &AE,"Rx Temp:       ",0,-0.6051,101.05,"Deg. C"
  325. Data &9C,"+X (RX) temp:  ",0,-0.6051,101.05,"Deg. C"
  326. Data &99,"Bat 1 V:       ",0,-0.0034084,1.7932,"Volts"
  327. Data &93,"Bat 2 V:       ",0,-0.0035316,1.7978,"Volts"
  328. Data &94,"Bat 3 V:       ",0,-0.0035723,1.8046,"Volts"
  329. Data &94,"Bat 4 V:       ",0,-0.003459,1.7782,"Volts"
  330. Data &92,"Bat 5 V:       ",0,-0.0038355,1.841,"Volts"
  331. Data &8B,"Bat 6 V:       ",0,-0.003845,1.8381,"Volts"
  332. Data &9A,"Bat 7 V:       ",0,-0.0037757,1.8568,"Volts"
  333. Data &96,"Bat 8 V:       ",0,-0.0034068,1.7868,"Volts"
  334. Data &24,"Array V:       ",0,0.072,7.205,"Volts"
  335. Data &5E,"+5V Bus:       ",0,0.0312,1.932,"Volts"
  336. Data &BD,"+8.5V Bus:     ",0,0.0173,5.265,"Volts"
  337. Data &9A,"+10V Bus:      ",0,0.021765,7.469,"Volts"
  338. Data &76,"BCR Set Point: ",0,1.159,-8.762,"Counts"
  339. Data &1F,"BCR Load Cur:  ",0,0.00698,-0.0871,"Amps"
  340. Data &1F,"+8.5V Bus Cur: ",0,0.001899,-0.0092,"Amps"
  341. Data &2E,"+5V Bus Cur:   ",0,0.00431,0.00502,"Amps"
  342. Data &00,"-X Array Cur:  ",0,0.00215,-0.01075,"Amps"
  343. Data &00,"+X Array Cur:  ",0,0.0027,-0.01349,"Amps"
  344. Data &01,"-Y Array Cur:  ",0,0.00239,-0.01196,"Amps"
  345. Data &00,"+Y Array Cur:  ",0,0.00228,-0.01141,"Amps"
  346. Data &00,"-Z Array Cur:  ",0,0.00245,-0.01653,"Amps"
  347. Data &00,"+Z Array Cur:  ",0,0.00228,-0.01137,"Amps"
  348. Data &00,"Ext Power Cur: ",0,0.0025,-0.02,"Amps"
  349. Data &2A,"BCR Input Cur: ",0,0.00317,0.06122,"Amps"
  350. Data &00,"BCR Output Cur:",0,0.00345,-0.01724,"Amps"
  351. Data &9C,"Bat 1 Temp:    ",0,-0.6051,101.05,"Deg. C"
  352. Data &C9,"Bat 2 Temp:    ",0,-0.6051,101.05,"Deg. C"
  353. Data &9C,"Baseplt Temp:  ",0,-0.6051,101.05,"Deg. C"
  354. Data &11,"FM TX#1 RF OUT:",0.0000836,-0.000884,0.0256,"Watts"
  355. Data &C7,"FM TX#2 RF OUT:",0.000073,0.001257,-0.0027,"Watts"
  356. Data &C2,"PSK TX HPA Temp",0,-0.6051,101.05,"Deg. C"
  357. Data &96,"+Y Array Temp: ",0,-0.6051,101.05,"Deg. C"
  358. Data &A5,"RC PSK HPA Temp",0,-0.6051,101.05,"Deg. C"
  359. Data &A3,"RC PSK BP Temp:",0,-0.6051,101.05,"Deg. C"
  360. Data &B8,"+Z Array Temp: ",0,-0.6051,101.05,"Deg. C "
  361. Data &99,"S band TX Out: ",0,0.00403,-0.0451,"Watts"
  362. Data &01,"S band HPA Temp",0,-0.6051,101.05,"Deg. C"
  363.  
  364.